﻿''' <summary>
''' コンピューターリスト画面のフォームです。
''' </summary>
''' <remarks></remarks>
Friend NotInheritable Class ComputerList

#Region " プライベートフィールド "
  Private ReadOnly groups As IEnumerable(Of DomainGroup)  'グループのリスト
#End Region

#Region " パブリックコンストラクター "
  ''' <summary>
  ''' ComputerList クラスの新しいインスタンスを初期化します。
  ''' </summary>
  ''' <remarks></remarks>
  Public Sub New()
    ' この呼び出しはデザイナーで必要です。
    InitializeComponent()
    ' InitializeComponent() 呼び出しの後で初期化を追加します。

    groups = DirectoryAccess.GetGroups(Of DomainGroup)()  'グループを取得
    Me.ComputerBindingSource.DataSource = DirectoryAccess.GetComputers()  'コンピューターを取得
    Me.CountLabel.Text = String.Format("{0} 個のオブジェクト", Me.ComputerBindingSource.Count)
  End Sub
#End Region

#Region " イベントハンドラ "
  Private Sub ComputerListBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComputerListBox.SelectedIndexChanged
    If Me.ComputerListBox.SelectedIndex = -1 Then
      Return
    End If

    Me.ShowBelongGroups()   '所属するグループを表示
  End Sub

  Private Sub GroupButton_Click(sender As Object, e As EventArgs) Handles GroupButton.Click
    Dim pc = DirectCast(Me.ComputerBindingSource.Current, Computer)   '選択されたコンピューター
    Using fm As New InRoleGroupList(pc)
      fm.ShowDialog(Me)
    End Using
  End Sub
#End Region

#Region " プライベートメソッド "
  ''' <summary>所属するグループを表示します。</summary>
  ''' <remarks></remarks>
  Private Sub ShowBelongGroups()
    Dim pc = DirectCast(Me.ComputerBindingSource.Current, Computer)   '選択されたコンピューター
    Me.GroupListBox.DataSource = pc.GetBelongGroups(groups)   '所属するグループを取得
  End Sub
#End Region
End Class